package com.dhecp.project.system.mapper;

import java.util.List;
import java.util.Map;

import com.dhecp.core.genericDao.GenericDao;
import com.dhecp.project.system.domain.SysModuleTask;

/**
 * 功能任务 数据层
 * @author DH-Xxj
 * @version 2020年4月23日
 */
public interface SysModuleTaskMapper extends GenericDao<SysModuleTask, String>{

	/**
	 * 查询未处理任务数
	 * @param cUser 必要参数：查询用户
	 * @return int - taskCount
	 * @author DH-Xxj
	 */
	int selectWcls(Map<String, Object> params);
	
	/**
	 * 查询计划数量
	 * @param 
	 * @return int - planCount
	 * @author DH-lwl
	 */
	int selectPlans(Map<String, Object> params);
	
	/**
	 * 查询总结数量
	 * @param 
	 * @return int - finishCount
	 * @author DH-lwl
	 */
	int selectFinishs(Map<String, Object> params);
	
	/**
	 * 查询未处理任务
	 * @param cUser 必要参数：查询用户
	 * @return List - SysModuleTask
	 * @author DH-Xxj
	 */
	List<SysModuleTask> selectWcl(Map<String, Object> params);

	/**
	 * 查询已处理任务
	 * @param cUser 必要参数：查询用户
	 * @return List - SysModuleTask
	 * @author DH-Xxj
	 */
	List<SysModuleTask> selectYcl(Map<String, Object> params);
	
	/**
	 * 查询当前用户为发送人数据
	 * @param 
	 * @return List - SysModuleTask
	 * @author DH-Xxj
	 */
	List<SysModuleTask> selectFs(Map<String, Object> params);
	
	/**
	 * 创建任务
	 * @param SysModuleTask 功能任务 实体
	 * @param buser		必要属性：任务发起人编号
	 * @param pGuid		必要属性：单据guid或nid
	 * @param moduleTable	必要属性：功能唯一标识（同一功能有多个不同任务时可加后缀区分，与存储过程中对应即可）
	 * @param createTime	可选属性：任务发起时间
	 * @param limitTime		可选属性：任务处理期限
	 * @return 
	 */
	int insertTask(SysModuleTask moduleTask);
	
	/**
	 * 修改任务状态
	 * @param moduleTask 功能任务 实体（需包含：guid,taskState,dealTime）
	 * @param guid		必要属性：行唯一值
	 * @param taskState	必要属性：状态
	 * @param dealTime	必要属性：处理时间
	 * @return
	 * @author DH-Xxj
	 */
	int updateTaskState(SysModuleTask moduleTask);
	
	/**
	 * 通过PGuid修改任务状态（主要用于处理任务时更新任务状态）
	 * @param moduleTask 功能任务 实体（需包含：pGuid,taskState,dealTime）
	 * @param pGuid		必要属性：任务对应详情行唯一值
	 * @param taskState	必要属性：状态
	 * @param dealTime	必要属性：处理时间
	 * @return
	 * @author DH-Xxj
	 */
	int updateTaskStateByPGuid(SysModuleTask moduleTask);
	
}
